package filter;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

/**
 * 辅助方法，包括缩放图像和判断路径
 */
public class Function {
    /**
     * 缩放图像（按比例缩放）
     * @param srcImageFile 源图像文件地址
     * @param result 缩放后的图像地址
     * @param flag 缩放选择:true 放大; false 缩小;
     */
    public final static void scale(String srcImageFile, String result,
                                   boolean flag, int framewidth) {
        try {
            BufferedImage src = ImageIO.read(new File(srcImageFile)); // 读入文件
            int width = src.getWidth(); // 得到源图宽
            int height = src.getHeight(); // 得到源图长
            double scale=1.0*framewidth*0.4/width;
            if (flag) {// 放大
                width = (int)(width * scale);
                height = (int)(height * scale);
            } else {// 缩小
                width = (int) (width / scale);
                height = (int) (height / scale);
            }
            Image image = src.getScaledInstance(width, height,
                    Image.SCALE_DEFAULT);
            BufferedImage tag = new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_RGB);
            Graphics g = tag.getGraphics();
            g.drawImage(image, 0, 0, null); // 绘制缩小后的图
            g.dispose();
            ImageIO.write(tag, "JPEG", new File(result));// 输出到文件流
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 判断传入路径是否为空
     * @param src 传入路径
     * @return 如果为空返回true，反之返回false
     */
    public static boolean judgeNull(String src){
        if(src.equals("")){
            JOptionPane.showMessageDialog(null,"请先选择图像源文件");
            return false;
        }
        else return true;
    }
}
